home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / mac / progrmng / mlpmodul.sit / MacLogimoPlus Documentation / DEF3 Files / QuickDraw.DEF < prev    next >
Encoding:
Modula Definition  |  1990-06-14  |  11.6 KB  |  233 lines  |  [TEXT/PMED]

  1. DEFINITION MODULE QuickDraw; (* Franz Kronseder 08.06.85 *)
  2.                              (* last modified 08.06.85 *)
  3. FROM SYSTEM IMPORT ADDRESS;                 
  4. IMPORT MacBase;                 
  5. EXPORT QUALIFIED
  6.   systemFont,applFont,NewYork,Geneva,Monaco, (* Font Numbers *)
  7.   Venice,London,Athens,SanFran,Toronto,
  8.   srcCopy,srcOr,srcXor,srcBic,               (* BitMap transfer modes *)
  9.   notSrcCopy,notSrcOr,notSrcXor,notSrcBic,
  10.   patCopy,patOr, patXor,patBic,
  11.   notPatCopy,notPatOr,notPatXor,notPatBic,
  12.   Byte,StrPtr,LongInt,OsType,Point,          (* MacBase types *)
  13.   Ptr,Handle,
  14.   QDPtr,QDHandle,Str255,Pattern,PatPtr,PatHandle, (* QuickDraw Types *)
  15.   Bits16,GrafVerb,StyleItem,Style,
  16.   FontInfo,Rect,BitMap,CursHandle,Cursor,PenState,RgnHandle,Region,
  17.   QDProcsPtr,QDProcs,GrafPtr,GrafPort,
  18.   QDGPointer,QDG,QDGlobals,
  19.   
  20.   InitGraf,OpenPort,InitPort,ClosePort,SetPort,GetPort,GrafDevice,SetPortBits,PortSize,
  21.   MovePortTo,SetOrigin,SetClip,GetClip,ClipRect,BackPat,InitCursor,SetCursor,HideCursor,
  22.   ShowCursor,ObscureCursor,GetCursor,ShieldCursor,HidePen,ShowPen,GetPen,GetPenState,
  23.   SetPenState,PenSize,PenMode,PenPat,PenNormal,MoveTo,Move,LineTo,Line,TextFont,
  24.   TextFace,TextMode,TextSize,SpaceExtra,DrawChar,DrawString,DrawText,CharWidth,StringWidth,
  25.   TextWidth,AddPt,SubPt,SetPt,EqualPt,ScalePt,MapPt,LocalToGlobal,GlobalToLocal,SetRect,
  26.   EqualRect,EmptyRect,OffsetRect,MapRect,InsetRect,SectRect,UnionRect,PtInRect,Pt2Rect,
  27.   FrameRect,PaintRect,EraseRect,InvertRect,FillRect,ScrollRect,CopyBits,GetIcon,PlotIcon,
  28.   GetPattern,GetFontInfo,NewRgn,DisposeRgn,CopyRgn,SetEmptyRgn,SetRectRgn,FrameRgn,
  29.   PaintRgn,EraseRgn,InvertRgn,FillRgn,TextBox;
  30.   
  31. CONST
  32.   (* Font Numbers *)
  33.   systemFont= 0;  applFont  = 1;  NewYork   = 2;  Geneva    = 3;
  34.   Monaco    = 4;  Venice    = 5;  London    = 6;  Athens    = 7;
  35.   SanFran   = 8;  Toronto   = 9;
  36.   (* the 16 transfer modes *)
  37.   srcCopy    = 0;  srcOr      = 1;  srcXor     = 2;  srcBic     = 3;
  38.   notSrcCopy = 4;  notSrcOr   = 5;  notSrcXor  = 6;  notSrcBic  = 7;
  39.   patCopy    = 8;  patOr      = 9;  patXor     =10;  patBic     =11;
  40.   notPatCopy =12;  notPatOr   =13;  notPatXor  =14;  notPatBic  =15;
  41.   
  42. TYPE Byte   =MacBase.Byte;    (* = CHAR    *)
  43.      StrPtr =MacBase.StrPtr;  (* = ADDRESS *)
  44.      LongInt=MacBase.LongInt; (* = ADDRESS *)
  45.      OsType =MacBase.OsType;  (* ARRAY[0..3] OF CHAR    *)
  46.      Point  =MacBase.Point;   (* RECORD v,h:INTEGER END *)
  47.      Handle =MacBase.Handle;
  48.      
  49. TYPE QDPtr     =  ADDRESS; 
  50.      QDHandle  =  POINTER TO QDPtr;     
  51.      Ptr       =  ADDRESS;
  52.      Str255    =  ARRAY[0..255] OF CHAR;
  53.      Pattern   =  ARRAY[0..7] OF CHAR;   (* 0..255 *)
  54.      PatPtr    =  POINTER TO Pattern;
  55.      PatHandle =  POINTER TO PatPtr;
  56.      Bits16    =  ARRAY[0..15] OF CARDINAL;
  57.                   (* VHSelect  =  (v,h); *)
  58.      GrafVerb  =  (frame,paint,erase,invert,fill);
  59.      StyleItem =  (bold,italic,underline,outline,shadow,condense,extend);
  60.      Style     =  SET OF StyleItem;
  61.      
  62.  FontInfo  =  RECORD ascent,descent,widMax,leading: INTEGER;  END;
  63.  
  64.  Rect = RECORD CASE INTEGER
  65.          OF 0: top,left,bottom,right :INTEGER;
  66.           | 1: topLeft,botRight      : Point;
  67.         END END;
  68.  
  69.  BitMap = 
  70.   RECORD  baseAddr: QDPtr; rowBytes: INTEGER; bounds:Rect;  END;
  71.  
  72.  CursHandle = POINTER TO CursPtr; CursPtr = POINTER TO Cursor;
  73.  Cursor     = RECORD data,mask: Bits16; hotSpot: Point; END;
  74.  
  75.  PenState =
  76.   RECORD pnLoc,pnSize:Point; mode:INTEGER; pnPat:Pattern; END;
  77.  
  78.  RgnHandle = POINTER TO RgnPtr; RgnPtr = POINTER TO Region;
  79.  Region    =  RECORD rgnSize: INTEGER; rgnBBox: Rect;  END;
  80.              (* rgnSize = 10 for rectangular      *)
  81.          (* plus more data if not rectangular *)
  82.  
  83. QDProcsPtr = POINTER TO QDProcs;
  84. QDProcs   = 
  85.  RECORD textProc,lineProc,rectProc,rRectProc,ovalProc,
  86.         arcProc,polyProc,rgnProc,bitsProc,commentProc,
  87.     txMeasProc,getPicProc,putPicProc               :QDPtr; END;
  88.  
  89.  GrafPtr  = POINTER TO GrafPort;
  90.  GrafPort =
  91.   RECORD
  92.    device:                   INTEGER;
  93.    portBits:                 BitMap;
  94.    portRect:                 Rect;
  95.    visRgn,clipRgn:           RgnHandle;
  96.    bkPat,fillPat:            Pattern;
  97.    pnLoc,pnSize:             Point;
  98.    pnMode:                   INTEGER;
  99.    pnPat:                    Pattern;
  100.    pnVis,txFont:             INTEGER;
  101.    txFace:                   Style;
  102.    txMode,txSize:            INTEGER;
  103.    spExtra,fgColor,bkColor:  LongInt;
  104.    colrBit,patStretch:       INTEGER;
  105.    picSave,rgnSave,polySave: QDHandle;
  106.    grafProcs:                QDProcsPtr;
  107.   END;
  108.  
  109. QDGPointer = POINTER TO QDG; (* QuickDraw global variables *)
  110. QDG =  RECORD randSeed  : LongInt;
  111.               screenBits: BitMap;
  112.               arrow     : Cursor;
  113.               dkGray,ltGray,gray,black,white: Pattern;
  114.               thePort   : GrafPtr
  115.        END;
  116. VAR QDGlobals:QDGPointer;(* variables defined in the rootloader*)
  117. (*---------------------------------------------------------------------------*)
  118. (* GrafPort Routines *)
  119. PROCEDURE InitGraf   (globalPtr: QDPtr);
  120. PROCEDURE OpenPort   (port: GrafPtr);                   (*INLINE $A86F*)
  121. PROCEDURE InitPort   (port: GrafPtr);                   (*INLINE $A86D*)
  122. PROCEDURE ClosePort  (port: GrafPtr);                   (*INLINE $A87D*)
  123. PROCEDURE SetPort    (port: GrafPtr);                   (*INLINE $A873*)
  124. PROCEDURE GetPort    (VAR port: GrafPtr);               (*INLINE $A874*)
  125. PROCEDURE GrafDevice (device: INTEGER);                 (*INLINE $A872*)
  126. PROCEDURE SetPortBits(VAR bm: BitMap);                  (*INLINE $A875*)
  127. PROCEDURE PortSize   (width,height: INTEGER);           (*INLINE $A876*)
  128. PROCEDURE MovePortTo (leftGlobal,topGlobal: INTEGER);   (*INLINE $A877*)
  129. PROCEDURE SetOrigin  (h,v: INTEGER);                    (*INLINE $A878*)
  130. PROCEDURE SetClip    (rgn: RgnHandle);                  (*INLINE $A879*)
  131. PROCEDURE GetClip    (rgn: RgnHandle);                  (*INLINE $A87A*)
  132. PROCEDURE ClipRect   (VAR r: Rect);                     (*INLINE $A87B*)
  133. PROCEDURE BackPat    (VAR pat: Pattern);                (*INLINE $A87C*)
  134.  
  135. (* Cursor Routines *)
  136. PROCEDURE InitCursor;                                   (*INLINE $A850*)
  137. PROCEDURE SetCursor(VAR crsr: Cursor);                  (*INLINE $A851*)
  138. PROCEDURE HideCursor;                                   (*INLINE $A852*)
  139. PROCEDURE ShowCursor;                                   (*INLINE $A853*)
  140. PROCEDURE ObscureCursor;                                (*INLINE $A856*)
  141. PROCEDURE GetCursor (cursorID: INTEGER):  CursHandle;   (*INLINE $A9B9*)
  142. PROCEDURE ShieldCursor(left,top,right,bottom: INTEGER); (*INLINE $A855*)
  143.  
  144. (* Line Routines *)
  145. PROCEDURE HidePen;                                      (*INLINE $A896*)
  146. PROCEDURE ShowPen;                                      (*INLINE $A897*)
  147. PROCEDURE GetPen     (VAR pt: Point);                   (*INLINE $A89A*)
  148. PROCEDURE GetPenState(VAR pnState: PenState);           (*INLINE $A898*)
  149. PROCEDURE SetPenState(VAR pnState: PenState);           (*INLINE $A899*)
  150. PROCEDURE PenSize    (width,height: INTEGER);           (*INLINE $A89B*)
  151. PROCEDURE PenMode    (mode: INTEGER);                   (*INLINE $A89C*)
  152. PROCEDURE PenPat     (VAR pat: Pattern);                (*INLINE $A89D*)
  153. PROCEDURE PenNormal;                                    (*INLINE $A89E*)
  154. PROCEDURE MoveTo     (h,v: INTEGER);                    (*INLINE $A893*)
  155. PROCEDURE Move       (dh,dv: INTEGER);                  (*INLINE $A894*)
  156. PROCEDURE LineTo     (h,v: INTEGER);                    (*INLINE $A891*)
  157. PROCEDURE Line       (dh,dv: INTEGER);                  (*INLINE $A892*)
  158.  
  159.  
  160. (* Text Routines *)
  161. PROCEDURE TextFont     (font: INTEGER);                 (*INLINE $A887*)
  162. PROCEDURE TextFace     (face: Style);                   (*INLINE $A888*)
  163. PROCEDURE TextMode     (mode: INTEGER);                 (*INLINE $A889*)
  164. PROCEDURE TextSize     (size: INTEGER);                 (*INLINE $A88A*)
  165. PROCEDURE SpaceExtra   (extra: LongInt);                (*INLINE $A88E*)
  166. PROCEDURE DrawChar     (ch: CHAR);                      (*INLINE $A883*)
  167. PROCEDURE DrawString   (s:StrPtr);                      (*INLINE $A884*)
  168. PROCEDURE DrawText     (textBuf: QDPtr; firstByte,byteCount: INTEGER);(*INLINE $A885*)
  169. PROCEDURE CharWidth    (ch: CHAR): INTEGER;             (*INLINE $A88D*)
  170. PROCEDURE StringWidth  (s:StrPtr): INTEGER;             (*INLINE $A88C*)
  171. PROCEDURE TextWidth    (textBuf: QDPtr; firstByte,byteCount: INTEGER): INTEGER;
  172.                                                         (*INLINE $A886*)
  173. PROCEDURE GetFontInfo  (VAR info: FontInfo);            (*INLINE $A88B*)
  174. PROCEDURE TextBox(inText:Ptr;textLength:LongInt;VAR r:Rect; style:INTEGER );
  175. (*Box drawing utility*)   (*INLINE $A9CE*)
  176.  
  177. (* Point Calculations *)
  178. PROCEDURE AddPt         (src: Point; VAR dst: Point);   (*INLINE $A87E*)
  179. PROCEDURE SubPt         (src: Point; VAR dst: Point);   (*INLINE $A87F*)
  180. PROCEDURE SetPt         (VAR pt: Point; h,v: INTEGER);  (*INLINE $A880*)
  181. PROCEDURE EqualPt       (pt1,pt2: Point): BOOLEAN;      (*INLINE $A881*)
  182. PROCEDURE ScalePt       (VAR pt: Point;VAR fromRect,toRect: Rect);(*INLINE $A8F8*)
  183. PROCEDURE MapPt         (VAR pt: Point;VAR fromRect,toRect: Rect);(*INLINE $A8F9*)
  184. PROCEDURE LocalToGlobal (VAR pt: Point);                (*INLINE $A870*)
  185. PROCEDURE GlobalToLocal (VAR pt: Point);                (*INLINE $A871*)
  186.  
  187. (* Rectangle Calculations *)
  188. PROCEDURE SetRect    (VAR r:Rect;left,top,right,bottom:INTEGER);(*INLINE $A8A7*)
  189. PROCEDURE EqualRect  (VAR rect1,rect2: Rect): BOOLEAN;  (*INLINE $A8A6*)
  190. PROCEDURE EmptyRect  (VAR r: Rect): BOOLEAN;            (*INLINE $A8AE*)
  191. PROCEDURE OffsetRect (VAR r: Rect; dh,dv: INTEGER);     (*INLINE $A8A8*)
  192. PROCEDURE MapRect    (VAR r,fromRect,toRect: Rect);     (*INLINE $A8FA*)
  193. PROCEDURE InsetRect  (VAR r: Rect; dh,dv: INTEGER);     (*INLINE $A8A9*)
  194. PROCEDURE SectRect   (VAR src1,src2,dstRect: Rect): BOOLEAN;(*INLINE $A8AA*)
  195. PROCEDURE UnionRect  (VAR src1,src2,dstRect: Rect);     (*INLINE $A8AB*)
  196. PROCEDURE PtInRect   (pt: Point;VAR r: Rect): BOOLEAN;  (*INLINE $A8AD*)
  197. PROCEDURE Pt2Rect    (pt1,pt2: Point;VAR dstRect: Rect);(*INLINE $A8AC*)
  198.  
  199. (* Graphical Operations on Rectangles *)
  200. PROCEDURE FrameRect  (VAR r: Rect);                     (*INLINE $A8A1*)
  201. PROCEDURE PaintRect  (VAR r: Rect);                     (*INLINE $A8A2*)
  202. PROCEDURE EraseRect  (VAR r: Rect);                     (*INLINE $A8A3*)
  203. PROCEDURE InvertRect (VAR r: Rect);                     (*INLINE $A8A4*)
  204. PROCEDURE FillRect   (VAR r: Rect;VAR pat: Pattern);    (*INLINE $A8A5*)
  205.  
  206. (* Graphical Operations on BitMaps *)
  207. PROCEDURE ScrollRect(VAR dstRect: Rect; dh,dv: INTEGER; updateRgn: RgnHandle);
  208.                                                         (*INLINE $A8EF*)
  209. PROCEDURE CopyBits  (VAR srcBits,dstBits: BitMap;
  210.                      VAR srcRect,dstRect: Rect;
  211.                      mode:            INTEGER;
  212.                      maskRgn:         RgnHandle);       (*INLINE $A8EC*)
  213.  
  214. (* a subset of region handling routines *)
  215. PROCEDURE NewRgn():   RgnHandle;                        (*INLINE $A8D8*)
  216. PROCEDURE DisposeRgn (rgn: RgnHandle);                  (*INLINE $A8D9*)
  217. PROCEDURE CopyRgn    (srcRgn,dstRgn: RgnHandle);        (*INLINE $A8DC*)
  218. PROCEDURE SetEmptyRgn(rgn: RgnHandle);                  (*INLINE $A8DD*)
  219. PROCEDURE SetRectRgn (rgn: RgnHandle;
  220.                       left,top,right,bottom:INTEGER);   (*INLINE $A8DE*)
  221. PROCEDURE FrameRgn   (rgn: RgnHandle);                  (*INLINE $A8D2*)
  222. PROCEDURE PaintRgn   (rgn: RgnHandle);                  (*INLINE $A8D3*)
  223. PROCEDURE EraseRgn   (rgn: RgnHandle);                  (*INLINE $A8D4*)
  224. PROCEDURE InvertRgn  (rgn: RgnHandle);                  (*INLINE $A8D5*)
  225. PROCEDURE FillRgn    (rgn: RgnHandle;VAR pat: Pattern); (*INLINE $A8D6*)
  226.  
  227. (* Miscellanous Routines *)
  228. PROCEDURE GetIcon(iconID:    INTEGER):  Handle;         (*INLINE $A9BB*)
  229. PROCEDURE PlotIcon(VAR theRect: Rect; theIcon: Handle); (*INLINE $A94B*)
  230. PROCEDURE GetPattern(patID: INTEGER):  PatHandle;       (*INLINE $A9B8*)
  231.  
  232. END QuickDraw.
  233.